package com.xzj.common.datasource.utils;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xzj.common.datasource.domain.PageReq;
import com.xzj.common.datasource.domain.PageResp;
import com.xzj.common.datasource.function.QueryPageFun;

import java.util.List;

/**
 * 公用分页方法
 *
 * @author xiazunjun
 * @date 2024/2/28 10:53
 */
public class XzjPageUtil {
    /**
     * 公共查询分页方法
     *
     * @param pageReq      分页参数对象
     * @param queryPageFun 执行查询的方法
     * @return PageResp<T>
     * @author xiazunjun
     * @date 2024/2/28 10:55
     */
    public static <T> PageResp<T> queryPage(PageReq<T> pageReq, QueryPageFun<T> queryPageFun) {
        PageHelper.startPage(pageReq.getPage(), pageReq.getPageSize());
        List<T> accept = queryPageFun.accept(pageReq.getT());
        PageInfo<T> pageInfo = new PageInfo<>(accept);
        PageResp<T> pageResp = new PageResp<>();
        pageResp.setTotal(pageInfo.getTotal());
        pageResp.setItems(pageInfo.getList());
        pageResp.setPageSize(pageReq.getPageSize());
        pageResp.setPage(pageReq.getPage());
        return pageResp;
    }
}
